﻿using System;
using System.Data;
using System.Data.SqlClient;
using Onshi.POS.AccesoDatos.Interfaces;

namespace Onshi.POS.AccesoDatos
{
    public class ServicioDatosCuentasContables : ServicioDatosBase, IServicioDatosCuentasContables
    {
        public DataSet CuentasContables_DevolverTodos()
        {
            try
            {
                var cm = new SqlCommand("CuentasContables_DevolverTodos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet CuentasContables_DevolverPorId(int idCuentaContable)
        {
            try
            {
                var cm = new SqlCommand("CuentasContables_DevolverPorId", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@idCuentaContable", idCuentaContable));
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public int CuentasContables_Insertar(string nombre, int idTipoCuentaContable, bool activo)
        {
            try
            {
                var cm = new SqlCommand("CuentasContables_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@Nombre", nombre));
                cm.Parameters.Add(new SqlParameter("@idTipoCuentaContable", idTipoCuentaContable));
                cm.Parameters.Add(new SqlParameter("@activo", activo));
                Conexion.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void CuentasContables_Modificar(int idCuentaContable, string nombre, int idTipoCuentaContable, bool activo)
        {
            try
            {
                var cm = new SqlCommand("CuentasContables_Modificar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdCuentaContable", idCuentaContable));
                cm.Parameters.Add(new SqlParameter("@Nombre", nombre));
                cm.Parameters.Add(new SqlParameter("@IdTipoCuentaContable", idTipoCuentaContable));
                cm.Parameters.Add(new SqlParameter("@activo", activo));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void CuentasContables_Eliminar(int idCuentaContable)
        {
            try
            {
                var cm = new SqlCommand("CuentaContable_Eliminar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdCuentaContable", idCuentaContable));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }
    }
}
